package com.example.demo.demos.redis.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;

// WebSocketConfig.java
@Configuration
@EnableWebSocketMessageBroker//- 启用 WebSocket 消息代理功能。这意味着应用将支持基于消息代理的消息传递，通常用于实现实时通信（如聊天、通知等）。
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {//配置消息代理
        //    - 启用了简单的内存消息代理（in-memory message broker），并将所有以 `/topic` 开头的消息路由到客户端
        config.enableSimpleBroker("/topic");
        //    - 设置应用程序消息的目的地前缀为 `/app`。这意味着所有以 `/app` 开头的消息将被路由到控制器中的处理方法。
        config.setApplicationDestinationPrefixes("/app");
    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        // 注册了一个名为 `/ws` 的 WebSocket 端点。客户端可以通过这个端点连接到 WebSocket 服务。
        registry.addEndpoint("/ws").withSockJS();
    }
}
